#ifndef SCANNER_H
#define SCANNER_H

#include <stdint.h>
#include <signal.h>

// 全局变量声明，定义在 main.c 中
extern volatile sig_atomic_t g_shutdown_requested;

/**
 * 解析大小字符串（支持k/m/g后缀）
 * @param size_str 大小字符串（如"100k", "1M", "2G"）
 * @return 解析后的字节数，失败返回-1
 */
int64_t parse_size(const char *size_str);

/**
 * 递归统计目录中符合条件的文件数量
 * @param directory 目录路径
 * @param min_size 最小文件大小
 * @return 文件数量
 */
int count_files_recursive(const char *directory, int64_t min_size);

/**
 * 扫描目录并处理文件
 * @param directory 目录路径
 * @param min_size 最小文件大小
 * @param thread_count 线程数
 * @param force_rehash 是否强制重新计算哈希
 * @param db 数据库连接
 * @return 0表示成功，-1表示失败
 */
int scan_directory(const char *directory, int64_t min_size, int thread_count, 
                   int force_rehash, void *db);

#endif // SCANNER_H
